boot/finalize-staged: Run after systemd-journal-flush.service
authorJonathan Lebon <jonathan@jlebon.com>
Tue, 24 Sep 2019 21:08:54 +0000 (17:08 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Tue, 24 Sep 2019 21:39:10 +0000 (21:39 +0000)
In Fedora 31, `systemd-journal-flush.service` uses a new
`--smart-relinquish-var` switch which fixes the
`umount: /var: target is busy` bug by telling journald to stop logging
to `/var` and back to `/run` again during shutdown.

This interacted with `ostree-finalize-staged.service` in a tricky way:
since we weren't strongly ordered against it, when we happened to
finalize after `/var` is relinquished, we never persisted the output
from that service to disk. This then threw off `rpm-ostree status` when
trying to find the completion message to know that finalization went
well.

Just fix this by adding an explicit `After=` on that unit. That way we
shut down *before* `systemd-journal-flush.service` (the `/var`
relinquish bit happens in its `ExecStop=`).

For more info, see:
https://github.com/systemd/systemd/commit/3ff7a50d66e3f851d3d9f132b740a7fb2055aa1d
https://github.com/systemd/systemd/commit/1e187d2dd52cbb4f0bb30e4d96acf7f72a145b91
https://bugzilla.redhat.com/show_bug.cgi?id=1751272

Closes: #1926
Approved by: cgwalters

src/boot/ostree-finalize-staged.service

index e112bc0cd82385adbe735f11e70c5d9a4db35a20..9c4706e8d7b4064946575e4e9960442d491dfc40 100644 (file)
@@ -26,6 +26,9 @@ DefaultDependencies=no
 RequiresMountsFor=/sysroot
 After=local-fs.target
 Before=basic.target final.target
+# We want to make sure the transaction logs are persisted to disk:
+# https://bugzilla.redhat.com/show_bug.cgi?id=1751272
+After=systemd-journal-flush.service
 Conflicts=final.target
 
 [Service]